Date		:	15 mai 1990
		Protection	:	disquette - piste 40d - weak bits
		Programme	:	KNIGHT FORCE
		Outils		:	QUAID, PERISCOPE, CARTE PANO_AT
		Temps pass�     : 	45 minutes
		Fichier		: 	KNIGHT.EXE
		Soci�t�		:	TITUS
		Divers		:
		Origine		:	INDONESIE
		Num�ro		:	023


	Avec ce type de logiciel il existe deux grandes cat�gories de
	protection ;
	Celle qui consiste � juste aller v�rifier si la protection est en
	place. Et celle qui en fonction de la protection charge en m�moire
	une portion de code et l'execute. Il va sans dire que c'est la
	premi�re cat�gorie qui se r�v�le la plus simple � contourner.

	KNIGHT FORCE appartient � la premi�re cat�gorie.

	En premier lieu utiliser QUAID pour d�terminer quelle INT est
	utilis�e pour lire la protection, en fait c'est syst�matiquement
	l'INT 13 ( interface disquette ) mais le BIOS transforme cette
	interruption en INT 40 lorsqu'un disque dur se trouve dans le PC.

	Avec QUAID on s'appercoit que le soft va lire la piste 40.
	En faisant du pas a pas on r�ussi � sortir de l'INT 40 puis du BIOS
	et du m�me coup de l'INT 13 qui elle figure dans le code du
	programme. Mais les possibilit�s de QUAID s'arr�tent ici, et il est
	temps de lancer la carte PANO avec PERISCOPE ( ce dernier se plante
	lamentablement lorsqu'on l'utilise seul en version SOFT ).

	Mais le probl�me qui se pr�sente maintenant c'est de trouver les
	correspondances d'adresses de charchement de CS car la place que
	prend QUAID en m�moire n'est pas la m�me que celle utilis�e par
	PERISCOPE. Heureusement les offsets sont les m�mes. Et comme
	PERISCOPE refuse de s'arr�ter sur quoi que ce soit - INT 13, BC,
	BM, GT, RUN, rien n'y fait d�s que le soft est lanc� il se d�roule
	en FULL SPEED.

	La seule solution c'est de d�clencher la NMI par l'interm�diaire de
	la carte PANO sur une adresse d'entr�e sortie disquette; 3F0-3FF
	Je commence � l'adresse 3F0 en ne validant pas la NMI mais en
	surveillant seulement l'affichage.
	A l'adresse 3F4 en lecture la NMI est d�clench�e, il ne reste plus
	qu'� relancer le soft en validant la NMI.

	PERISCOPE s'affiche en plein dans l'INT 40 - c'�tait pr�vu, pas
	moyen de faire autrement - un long pas a pas avec des TN ( les JN
	ne sont pas possibles en ROM ) tout en modifiant les flags
	rencontr�s pour sortir plus vite du BIOS. ( rfl )

	On fini par rentrer dans le programme apr�s l'INT 13 � l'adresse
	CS:IP 379A:04EC  ( adresse pr�te � �tre plac�e sur les roues
	codeuses ) En faisant une recherche avec S CS:0 FFFF CD 13 on
	trouve 2 autres appels � l'INT 13 aux offsets 51F et 52F.
	En d�roulant la premi�re boucle on trouve un RET qui nous ram�ne �
	toute une s�rie de CALL. ( voir ci-dessous )
	Le premier et le second CALL englobent forc�ment les 3 appels �
	l'INT 13.
	Le premier essaie sous PERISCOPE a �t� d'y placer des NOP ( 10 )
	pour voir... et effectivement le soft fonctionne correctement.

	Mais ne fonctionne plus une fois la modif faite par PCTOOLS dans le
	fichier !

	Une visualisation de la zone permet de voir que le soft y �crit des
	choses bizzares, ceci m�lang� avec mes NOP g�n�re des instructions
	non pr�vues. Autant dire que le soft ne demande pas son reste pour
	se planter. Une protection suppl�mentaire , ou une astuce pour bien
	v�rifier la pr�cense des acc�s disquettes peut-�tre...

	Heureusement les 3 premiers NOP ne sont pas "touch�s"; c'est
	suffisant pour y placer un JMP qui contourne les 2 CALL
	ind�sirables. 

	AX=0000 BX=01AE CX=0003 DX=8C79 SP=0FD4 BP=0FDA SI=100D DI=0111
	DS=338D ES=396A SS=396A CS=26E3 IP=026E  NV UP EI PL ZR NA PE NC
	WR SS:0FD0 = 26E3 1700
	26E3:026E 9AB9049A37    CALL    379A:04B9
	
	26E3:026E est l'arr�t sur adresse affich� sur la carte PANO_AT

	26E3:026E 9AB9049A37    CALL    379A:04B9

	Ce CALL a �t� remplac� par JMP 0278    ---->    EB08
							
	Et les 3 octets restant sont ignor�s tant qu'ils ne modifient pas
	la suite des instructions en 0278.
	
	26E3:0273 9A03059A37    CALL    379A:0503
	26E3:0278 9A4D0F9A37    CALL    379A:0F4D
	26E3:027D 9AFF0C1629    CALL    2916:0CFF
	26E3:0282 9A1308E326    CALL    26E3:0813
	26E3:0287 C7067D560100  MOV     WORD PTR [567D],0001
	26E3:028D 9AE304E326    CALL    26E3:04E3
	26E3:0292 9A5108E326    CALL    26E3:0851
	26E3:0297 9A9505E326    CALL    26E3:0595
	26E3:029C 9AA00D1629    CALL    2916:0DA0
	26E3:02A1 9A4F131629    CALL    2916:134F
	26E3:02A6 9A0A03E326    CALL    26E3:030A
	26E3:02AB C606F53E00    MOV     BYTE PTR [3EF5],00
	26E3:02B0 C7062A31C800  MOV     WORD PTR [312A],00C8
	
	Avec PCTOOLS chercher : SL 11  DEP 270 et remplacer 9AB9 par EB08.

	FREDDY